package ik.am.jpetstore.app.byme;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import ik.am.jpetstore.app.byme.util.BymeUtil;
import ik.am.jpetstore.domain.model.byme.Info;
import ik.am.jpetstore.domain.model.byme.TextStyle;
import ik.am.jpetstore.domain.model.byme.Weblist;
import ik.am.jpetstore.domain.service.byme.BymeAppService;

@Controller
@RequestMapping("htHand")
public class HtmlHandler {

	@Inject 
	protected BymeAppService bymeService;
	
	
	@RequestMapping("test")
	public String test() {
		System.out.println("test ing ");
		return "";
	}

	// @RequestMapping(value="/add", method=RequestMethod.POST)
	// @RequestMapping("add")
	// @RequestMapping(value="/add", method=RequestMethod.POST)
	@RequestMapping(value = "/add", method = RequestMethod.POST)
	public String handleFileUpload(@RequestParam("file") MultipartFile[] file, 
			@RequestParam("account") String ac,
			@RequestParam("pic") String[] pics,
			@RequestParam("para") String[] paras, HttpServletRequest request) throws IOException {

		//用户信息,是在设置请求时设定的
		//		User u = new User();
		//		u.setC_nickname("test");
		//		u.setC_headPicAddress("test");

	
		
		//网页主信息
		Weblist wb = new Weblist();
		wb.setN_userid(1);
		wb.setD_createTime(new Date());
		
		int wbid = bymeService.addWeblist(wb);
		
		//网页内容信息
		int order = 0;
		if(pics.length != file.length){
			System.out.println("缺失文件");
			return "";
		}
		//保存图片信息
		for (int i = 0 ;i < file.length ;i ++) {
			//保存图片文件
			MultipartFile myfile = file[i];
			String picPath = "";
			if (myfile.isEmpty()) {
				System.out.println("文件未上传");
				return "";
			} else {
				System.out.println("文件长度: " + myfile.getSize());
				System.out.println("文件类型: " + myfile.getContentType());
				System.out.println("文件名称: " + myfile.getName());
				System.out.println("文件原名: " + myfile.getOriginalFilename());
				System.out.println("========================================");
				// 如果用的是Tomcat服务器，则文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\WEB-INF\\upload\\文件夹中
				// String realPath =
				// request.getSession().getServletContext().getRealPath("/WEB-INF/upload");
				String realPath = BymeUtil.ROOTPATH;
				String fullName = myfile.getOriginalFilename() + Math.random() + ".jpg";
				// 这里不必处理IO流关闭的问题，因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉，我是看它的源码才知道的
				FileUtils.copyInputStreamToFile(myfile.getInputStream(),
						new File(realPath, fullName));
				picPath = realPath +"/" + fullName;
			}
			//保存图片文件信息
			String pic = pics[i];
			System.out.println(pic);
			order ++ ;
			Info inf = new Info();
			inf.setN_order(order);
			inf.setC_picSize(pic);
			inf.setC_picAddress(picPath);
			inf.setN_weblistId(wbid);
			
			bymeService.addInfo(inf);
		}
		//保存段落信息
		for (String para : paras) {
			//分隔符暂时用 &，后续会更换一个不容易出现重复的字段
			//这个是段落2&Hel&2
			if (para.length() > 0){
				String[] cs = para.split(BymeUtil.splitV);
				if(cs.length == 3){
					System.out.println(para);
				
					//保存文本内容
					Info i = new Info();
					order ++ ;
					i.setC_text(cs[0]);
					i.setN_order(order);
					i.setN_weblistId(wbid);
					bymeService.addInfo(i);
					
					//保存文本调试格式
					TextStyle a = new TextStyle();
					a.setC_font(cs[1]);
					a.setN_alignment(new Integer(cs[2]));
					bymeService.addTextStyle(a);
					
				}else{
					System.out.println("参数错误 02");
				}
				
			}else{
				System.out.println("参数错误 01");
			}
			
			
			
			
			
		}

		// 如果只是上传一个文件，则只需要MultipartFile类型接收文件即可，而且无需显式指定@RequestParam注解
		// 如果想上传多个文件，那么这里就要用MultipartFile[]类型来接收文件，并且还要指定@RequestParam注解
		// 并且上传多个文件时，前台表单中的所有<input
		// type="file"/>的name都应该是myfiles，否则参数里的myfiles无法获取到所有上传的文件
		for (MultipartFile myfile : file) {
			
		}
		// users.put(user.getUsername(), user);
		return "redirect:/user/list";
	}

	// @RequestMapping("fileUpload")
	// public String fileUpload(@RequestParam("name") String name,
	// @RequestParam("file") MultipartFile file) {
	// // 判断文件是否为空
	// if (!file.isEmpty()) {
	// System.out.println(@"");
	// try {
	// // 文件保存路径
	//// String filePath =
	// request.getSession().getServletContext().getRealPath("/") + "upload/"
	//// + file.getOriginalFilename();
	// // 转存文件
	//// file.transferTo(new File(filePath));
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// }
	// // 重定向
	// return "redirect:/list.html";
	// }

}
